def domain_lookup_by_name_nr(self, name):
self.domains_lock.acquire()
try:
- matching = filter(
- lambda d: d.getName() == name and not d.isShutdown(),
- self.domains.values())
+ matching = filter(lambda d: d.getName() == name,
+ self.domains.values())
n = len(matching)
if n == 1:
return matching[0]
- elif n > 1:
- log.error('Name uniqueness has been violated for name %s! '
- 'Recovering by renaming:', name)
- for d in matching:
- d.renameUniquely()
-
return None
finally:
self.domains_lock.release()
self.state_updated.release()
- def isShutdown(self):
- self.state_updated.acquire()
- try:
- return self.state == STATE_DOM_SHUTDOWN
- finally:
- self.state_updated.release()
-
-
def __str__(self):
s = "<domain"
s += " id=" + str(self.domid)
self.state_set(STATE_DOM_SHUTDOWN)
- ## public:
-
- def renameUniquely(self):
- """Rename this domain so that it has a unique name. This is used by
- XendDomain to recover from non-uniqueness errors; we should never have
- allowed the system to reach this state in the first place."""
- new_name = self.generateUniqueName()
-
- log.error('Renaming %s (%d, %s) to %s', self.info['name'], self.domid,
- self.uuid, new_name)
-
- self.setName(new_name)
-
-
# private:
def generateUniqueName(self):